This is the presentation I gave about my thesis on error tolerance for live programming environments.
You can find the source code on GitHub, a more in-depth demonstration video here and the full thesis here.
You can also experiment with the programming environment yourself by following the direction on the GitHub page.
Live programming environments promise to close the gap between writing programs and observing their runtime behaviour. Live programming support needs to keep functioning for incomplete programs, i.e. it needs to be error-tolerant, to keep this promise.
In this thesis, we present a live programming environment prototype that (1) provides a foundation for error-tolerant IDE services in general and (2) offers error-tolerant support for live programming by showing up-to-date runtime values of relevant expressions.
To accomplish this, we developed a structure editor that maintains the flexible and language-independent interface of standard text editors, by incorporating a novel notion of incompleteness, called construction sites.
We formalize the meaning of programs with syntax, binding and type errors by extending the notion of (weak head) normal form and giving a denotational call-by-need semantics. Based on this foundation, an interpreter can provide meaningful runtime information in practically all editor states. Furthermore, the programming environment remains responsive and even provides partial runtime information for lengthy or non-terminating computations.
This work suggests that there is a powerful synergy between error tolerance and live programming support that could greatly benefit developer productivity.